1. Field of the Invention
This invention pertains in general to protecting a computer from malicious software and in particular to techniques for coordinating applications in a virtualized environment.
2. Description of the Related Art
A virtual machine is a self-contained environment for running software. Several virtual machines are often executed on the same physical computer. By executing multiple virtual machines on the same computer, multiple computing environments can be provided at a lower cost than if the environments were run on separate computers. Virtual machines also provide other benefits, such as increased flexibility in partitioning computing resources among multiple computing environments.
Various types of virtualization technologies exist. In some cases, multiple virtual machines on a computer are run under a hypervisor, a virtual machine emulator. The hypervisor runs at a higher privilege level than the virtual machines and is generally capable of controlling the operation of the virtual machines. The operation of the hypervisor and the virtual machines can be assisted by virtualization support in the computer hardware. However, such support is not necessary. Each virtual machine has a separate thread of execution and may run its own operating system, enabling multiple operating systems to run on the same computer.
Applications may be run within the virtual machines. These can be anti-malware applications that protect the virtual machines from malware. For example, an anti-virus scanning program may be run within a virtual machine to detect and remove viruses in the virtual machine environment. These anti-malware applications use real resources of the computer, such as the computer's processor, disk drives, and network interfaces.
An application running within one virtual machine generally is not aware of applications running within another virtual machine. As a result, applications running in different virtual machines can cause resource conflicts on the computer, possibly degrading the performance of the computer (and affecting all virtual machines running on the computer) or causing the applications to fail. For example, several virtual machines on a computer may have virus scan programs scheduled to automatically run at 3:00 AM every day, causing the computer's real processor and hard disk to become overloaded at the scheduled time. Therefore, there is a need in the art for a way to coordinate applications running in different virtual machines on a computer.